YOLO 超详细入门(含开源代码) | 您所在的位置:网站首页 › yolo 图片分类 › YOLO 超详细入门(含开源代码) |
文章目录
前言背景一、YOLO的核心原理预览二、网络结构为什么每个网格有固定的B个Bounding Boes?(即B=2)
三、网络细节3.1 网络单元(grid)3.1.1 作用3.1.2 细节特征
3.2 网络实现3.2.1 检测策略 实现过程如下:
3.2.2 预测形状3.2.3 非极大值抑制(Non-Maximum Suppression)作用具体实现
3.3 目标损失函数3.3.1 思路3.3.2 分类3.3.3 细节分类预测损失坐标预测损失置信度预测损失
四、YOLO的优点五、YOLOv1的伏笔——YOLOv2,YOLOv3的诞生
前言
代码地址:GitHub:ultralytics/yolov3 本文适用于目标检测之YOLO零基础入门。YOLO检测效果如下: ![]() 笔者在阅读《You Only Look Once:Unified, Real-Time Object Detection》原文后,根据自身理解及查阅资料,以入门角度尽可能想要还原论文细节,水平有限,欢迎交流。 【读后再读】:《YOLO超详细入门02 v2零基础看懂 图文详解(含代码及原文)——网络架构,BN,高分辨率,细粒度特征,多尺度训练,Anchor Box,维度聚类,直接位置预测,输出特点,YOLO9000》【读后再读】:《YOLO超详细入门 03 v3 图文详解(含代码+原文)》 背景![]() 对于每一个网格(grid),都会预测出B个bounding boxes(B=2),这个bounding boxes有5个量,分别是物体的中心位置(x,y)和它的高(h)和宽(w),以及这次预测的置信度(confidence score)。 每个框还要负责预测这个框中的物体是什么类别的,共预测C个类。 综上,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C)。(S x S个网格,每个网格都有B个预测框,每个框又有5个参数,再加上每个网格都有C个预测类) 二、网络结构
网络结构是由GoogLeNet所启发,取代了GoogLeNet使用的inception。 为什么每个网格有固定的B个Bounding Boes?(即B=2)YOLO 有 24 个卷积层,后面是 2 个全连接层(FC)。一些卷积层交替使用 1×1 减少层来减少特征图的深度。对于最后一个卷积层,它输出一个形状为 (7, 7, 1024) 的张量。然后张量被展平。使用 2 个全连接层作为线性回归的一种形式,它输出 7×7×30 参数,然后reshape为 (7, 7, 30),即每个位置 2 个bounding boxes预测。 网络输入:448 x 448 x 3的RGB图片。中间层:由若干卷积层和最大池化层组成,用于提取图片的抽象特征。全连接层:由两个全连接层组成,用来预测目标的位置和类别概率值。网络输出:7 × 7 × (2 x 5 + 20)= 1470的预测结果。 三、网络细节 3.1 网络单元(grid) 3.1.1 作用 预测B个边界框,每个框都有一个置信度分数(confidence score)。不管框 B 的数量是多少,都只检测一个对象。预测物体在C个类别的概率(物体属于每一种类别的可能性)。 3.1.2 细节特征![]() ![]() ![]() ![]() 1.YOLO将输入的图片resize成448 x 448,并且为 S x S(S = 7)个grid,如果物体的中心落入该grid中,那么该grid就需要负责检测该物体。 2.对于每一个网格(grid),都会预测出B个bounding boxes(B=2),这个bounding boxes有5个量,分别是物体的中心位置(x,y)和它的高(h)和宽(w),以及这次预测的置信度(confidence score)。 3.每个框还要负责预测这个框中的物体是什么类别的,共预测C个类。 4.综上,S×S 个网格,每个网格要预测 B个bounding box ,还要预测 C 个类。网络输出就是一个 S × S × (5×B+C)。 3.2.2 预测形状算法原理图如下: 简化理解为: ![]() 1.设定置信度阈值(confidence score threshold),去掉无用的bounding box 再开始做NMS,可以有效减少多余的计算量。 2.设定IoU阈值(IoU threshold) (一般用0.5,如果太高会造成物件重复检测的问题),用来刪掉IoU值太高的两个框其中之一。 3.使用置信度(confidence score)对Bounding box 排序然后用第一的Bounding box跟其他Bounding box算IoU,如果大于IoU threshould 就将其置信度归零。 4.重复步骤2-3,直到所有物件的IoU值为0,此时剩下的就是结果。 3.3 目标损失函数YOLO用预测(predictions)和ground truth之间的平方和误差(sum-squared error)来计算损失。损失函数包括: 分类预测损失坐标预测损失(预测的bounding box和ground truth之间的差距)置信度预测损失(框的客观真实性) 3.3.3 细节 分类预测损失![]() 如果在 box 中检测到物体,则置信度预测损失为: 如果在 box 中没有检测到物体,则置信度预测损失为: 大多数box不包含任何物体对象。这会导致类不平衡问题,即我们训练模型时检测背景比检测物体更加频繁。为了解决这个问题,我们通过乘以 λ n o o b j λ_{noobj} λnoobj (默认值:0.5),对这种损失进行赋权。 四、YOLO的优点快速,实时处理数据。 采用但阶段网络(one-stage)。预测(物体位置和类别)由一个网络进行。可以进行端到端(end-to-end)训练以提高准确性。 通用性强。当从自然图像推广到艺术品等其他领域时,YOLO的效果也同样优于其他方法。 RPN(Region Proposal)区域提议方法将分类器限制在特定区域。而YOLO 在预测边界时却访问整个图像。 YOLO 在背景区域中的表现更好,错误率更低。 YOLO中的每个网格单元(gride cell)都负责检测一个物体,而这实际上使得YOLO在进行预测时增强了空间多样性。 五、YOLOv1的伏笔——YOLOv2,YOLOv3的诞生 【读后再读】:《YOLO超详细入门02 v2零基础看懂 图文详解(含代码及原文)——网络架构,BN,高分辨率,细粒度特征,多尺度训练,Anchor Box,维度聚类,直接位置预测,输出特点,YOLO9000》【读后再读】:《YOLO超详细入门 03 v3 图文详解(含代码+原文)》![]() ![]() SSD与YOLOv3的对比,详细请见参考论文《SSD vs. YOLO for Detection of Outdoor Urban Advertising Panels under Multiple Variabilities》 SSD 是 YOLOv1的强大竞争对手,它在当时展示了更高的实时处理精度。与基于区域的检测器相比,YOLO 的坐标定位误差更高,recall(召回率:衡量定位所有目标物体的好坏程度)更低。YOLOv2 是YOLO的第二个版本,其目标是显着提高准确性,同时使其更快。 详情下回分解。 |
CopyRight 2018-2019 实验室设备网 版权所有 |